#include <iostream>
#include <unistd.h>
#include <fcntl.h>
#include <sys/select.h>

//设置文件为非阻塞模式
void SetNonBlock(int fd)
{
    int fl = fcntl(fd, F_GETFL); // 获取文件的状态标志
    if(fl < 0) 
        perror("fcntl");

    fcntl(fd, F_SETFL, fl | O_NONBLOCK); // 增加一个状态标志O_NONBLOCK，表示非阻塞IO
}

int main()
{
    // SetNonBlock(0);

    // //非阻塞IO
    // while(true)
    // {
    //     char buff[1024];
    //     int n = read(0, buff, sizeof buff);
    //     if(n == 0) // 读取结束
    //     {
    //         break;
    //     }
    //     else if(n < 0) // 读取错误或未准备就绪
    //     {
    //         if(errno == EWOULDBLOCK) // 未准备就绪
    //         {
    //             std::cout << "未准备就绪" << std::endl;
    //             sleep(1);
    //             continue;
    //         }
    //         else if(errno == EINTR) // 信号中断
    //         {
    //             //重新读
    //             continue;
    //         }
    //         else // 读取错误
    //         {
    //             perror("read");
    //         }
    //     }
    //     else
    //     {
    //         buff[n - 1] = '\0';
    //         std::cout << buff << std::endl;
    //     }
    // }
}